/*
 //Esta classe será utilizada para armazenar os valores temporariamente
 */
package Data;

import java.text.ParseException;



public class Funcionario extends Pessoa{
    private static final String funcTable = "funcionarios";
    final String senha = "SENHA";
    final String rp = "RP";
    private boolean flagFuncionarioNaoCadastrado = false;

  public Funcionario(Funcionario c) {
      super(c);
  }

/*
 * Usado para inserir
 */
  public Funcionario( String cpf, String nome, String sobrenome, String logradouro, String numero, String bairro,
                      String cidade, String estado, String cep, String telefone, String celular, String senha, String apelido,
                      String dataNascimento, String sexo, String rg) throws ParseException {
      super(cpf,  nome,  sobrenome,  apelido, rg, dataNascimento, logradouro,  numero,  bairro,  cidade,
           estado,  cep,  telefone,  celular, sexo);
      hmPessoa.put(this.rp , 1);
      if (senha.length() > 0)
        hmPessoa.put(this.senha , senha);
  }

    /*
     * Usado para Atualizar
     */
  public Funcionario(String nome, String sobrenome, String cpf, String apelido){
        super(nome, sobrenome, cpf, apelido);
  }

  public Funcionario() {

    }

    public void setData(String key, Object value){
            super.setData(key, value);
    }

    public String getSenha() {
        //return carteirinha;
        return (String) this.hmPessoa.get(this.senha);
    }

    public void setSenha(String senha) {
        this.hmPessoa.put(this.senha, senha);
    }

    public String getInsertSql(){
        if (hmPessoa.size() > 0){
        final String separator = ", ";
        StringBuilder campos = new StringBuilder("INSERT into "+ funcTable + " (");
        StringBuilder valores = new StringBuilder(") values (");
        for (String campo : hmPessoa.keySet()) {
            campos.append(campo + separator);

            if (hmPessoa.get(campo) instanceof java.lang.String){
                valores.append("'" + hmPessoa.get(campo) + "'");
            }
            else if (campo.equals(this.dataNascimento)){
                valores.append(getDataNascimentoSql());
            } else valores.append(hmPessoa.get(campo));

            valores.append(separator);
        }
        valores.delete(valores.lastIndexOf(separator), valores.length()); //apaga a ultima ", "
        campos.delete(campos.lastIndexOf(separator), campos.length());
        System.out.println("String Insert Sql: " + campos.toString() + valores.toString());

        return campos.toString() + valores.toString() + ")";
        } else {
            return null;
        }
    }

    public String getUpdateSql(String where){
        if (hmPessoa.size() > 0){
        final String separator = ", ";
        StringBuilder campos = new StringBuilder("UPDATE "+ funcTable + " SET ");
        //StringBuilder valores = new StringBuilder(") values (");
        for (String campo : hmPessoa.keySet()) {
            campos.append(campo + " = ");

            if (hmPessoa.get(campo) instanceof java.lang.String){
                campos.append("'" + hmPessoa.get(campo) + "'");
            }
            else if (campo.equals(this.dataNascimento)){
                campos.append(getDataNascimentoSql());
            } else campos.append(hmPessoa.get(campo));

            campos.append(separator);
        }
        //campos.delete(campos.lastIndexOf(separator), valores.length()); //apaga a ultima ", "
        campos.delete(campos.lastIndexOf(separator), campos.length());
        System.out.println("String Update Sql: " + campos.toString());
        return campos.toString() + " where " + where;
        } else {
            return null;
        }
    }

    public boolean isFlagFuncionarioNaoCadastrado() {
        return flagFuncionarioNaoCadastrado;
    }

    public void setFlagFuncionarioNaoCadastrado(boolean flagFuncionarioNaoCadastrado) {
        this.flagFuncionarioNaoCadastrado = flagFuncionarioNaoCadastrado;
    }



}